package com.wangzhenyu.learn.test.webview

import android.content.Context
import android.os.Bundle
import android.webkit.JavascriptInterface
import android.webkit.WebChromeClient
import android.webkit.WebView
import android.webkit.WebViewClient
import android.widget.Button
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.wangzhenyu.common.util.exts.singleClick
import com.wangzhenyu.learn.R


class WebViewActivity : AppCompatActivity() {

    private lateinit var webView: WebView

    @Suppress("SetJavaScriptEnabled")
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_web_view)

        webView = findViewById(R.id.webView)

        //加载本地HTML代码
        val setting = webView.settings
        // 设置屏幕自适应。
        setting.useWideViewPort = true
        setting.loadWithOverviewMode = true
        //设置支持JS代码
        //如果访问的页面中要与Javascript交互，则webview必须设置支持Javascript
        //若加载的 html 里有JS 在执行动画等操作，会造成资源浪费（CPU、电量）
        //在 onStop 和 onResume 里分别把 setJavaScriptEnabled() 给设置成 false 和 true 即可
        setting.javaScriptEnabled = true
        setting.javaScriptCanOpenWindowsAutomatically = true //设置可以进行JS交互
        setting.allowFileAccess = true //设置支持打开文件
        setting.allowFileAccessFromFileURLs = true
        webView.loadUrl("file:///android_asset/html/myjs.html")     //设置加载显示的文件
        //复写shouldOverrideUrlLoading()方法，使得打开网页时不调用系统浏览器， 而是在本WebView中显示
        webView.webViewClient = object : WebViewClient() {
            override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
                view.loadUrl("file:///android_asset/html/myjs.html")
                return false
            }
        }

        //设置处理js代码的客户端
        webView.webChromeClient = WebChromeClient()


        //设置在JS中调用Android当中的代码
        webView.addJavascriptInterface(LocalJavaScript(this), "wzy")



        findViewById<Button>(R.id.button).singleClick {

            //Android中调用js中函数
            webView.loadUrl("javascript:testAlert()")

        }
    }
}

class LocalJavaScript(private val context: Context) {


    @JavascriptInterface
    fun callFromJS(str: String) {
        Toast.makeText(context, "调用了Android中的方法，$str", Toast.LENGTH_SHORT).show()
    }

}